import request from '@/utils/request'

/**
 * 获取状态分组列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码，默认1
 * @param {number} params.pagesize - 每页数量，默认50
 * @param {string} params.kw - 关键词搜索
 * @returns {Promise}
 */
export function GetStateGroups(params = {}) {
  return request({
    url: '/crm/api/crmorderstategroup/',
    method: 'get',
    params
  })
}

/**
 * 获取单个状态分组详情
 * @param {number} id - 分组ID
 * @returns {Promise}
 */
export function GetStateGroup(id) {
  return request({
    url: `/crm/api/crmorderstategroup/${id}/`,
    method: 'get'
  })
}

/**
 * 创建状态分组
 * @param {Object} data - 分组数据
 * @param {string} data.name - 分组名称
 * @param {Array} data.states - 状态ID列表
 * @param {string} data.color - 分组颜色，默认#409EFF
 * @param {string} data.description - 分组描述
 * @param {boolean} data.is_default - 是否默认分组
 * @param {number} data.sort_order - 排序顺序
 * @returns {Promise}
 */
export function CreateStateGroup(data) {
  return request({
    url: '/crm/api/crmorderstategroup/',
    method: 'post',
    data
  })
}

/**
 * 更新状态分组
 * @param {number} id - 分组ID
 * @param {Object} data - 更新数据
 * @returns {Promise}
 */
export function UpdateStateGroup(id, data) {
  return request({
    url: `/crm/api/crmorderstategroup/${id}/`,
    method: 'put',
    data
  })
}

/**
 * 删除状态分组
 * @param {number} id - 分组ID
 * @returns {Promise}
 */
export function DeleteStateGroup(id) {
  return request({
    url: `/crm/api/crmorderstategroup/${id}/`,
    method: 'delete'
  })
}

/**
 * 应用状态分组（获取分组包含的状态ID）
 * @param {number} id - 分组ID
 * @returns {Promise}
 */
export function ApplyStateGroup(id) {
  return request({
    url: `/crm/api/crmorderstategroup/${id}/apply/`,
    method: 'get'
  })
}

/**
 * 批量操作状态分组
 * @param {Object} data - 操作数据
 * @param {string} data.action - 操作类型：delete, update_sort
 * @param {Array} data.group_ids - 分组ID列表
 * @param {Array} data.sort_data - 排序数据（仅update_sort时需要）
 * @returns {Promise}
 */
export function BatchActionsStateGroup(data) {
  return request({
    url: '/crm/api/crmorderstategroup/batch_actions/',
    method: 'post',
    data
  })
}

/**
 * 使用通用接口获取状态分组（备用）
 * @param {number} id - 分组ID（可选）
 * @param {string} params - 查询参数字符串
 * @returns {Promise}
 */
export function GetStateGroupsByCommon(id = null, params = '') {
  const url = id
    ? `/crm/api/crmm/CRMOrderStateGroup/${id}/`
    : '/crm/api/crmm/CRMOrderStateGroup/'

  return request({
    url: params ? `${url}?${params}` : url,
    method: 'get'
  })
}

/**
 * 使用通用接口创建状态分组（备用）
 * @param {Object} data - 分组数据
 * @returns {Promise}
 */
export function CreateStateGroupByCommon(data) {
  return request({
    url: '/crm/api/crmm/CRMOrderStateGroup/',
    method: 'post',
    data
  })
}

/**
 * 使用通用接口更新状态分组（备用）
 * @param {number} id - 分组ID
 * @param {Object} data - 更新数据
 * @returns {Promise}
 */
export function UpdateStateGroupByCommon(id, data) {
  return request({
    url: `/crm/api/crmm/CRMOrderStateGroup/${id}/`,
    method: 'put',
    data
  })
}

/**
 * 使用通用接口删除状态分组（备用）
 * @param {number} id - 分组ID
 * @returns {Promise}
 */
export function DeleteStateGroupByCommon(id) {
  return request({
    url: `/crm/api/crmm/CRMOrderStateGroup/${id}/`,
    method: 'delete'
  })
}
